bitkeeper revision 1.1159.79.8 (414ff88ctzr9PXDn3DxSGatY15KN7Q)
authorkaf24@freefall.cl.cam.ac.uk <kaf24@freefall.cl.cam.ac.uk>
Tue, 21 Sep 2004 09:46:52 +0000 (09:46 +0000)
committerkaf24@freefall.cl.cam.ac.uk <kaf24@freefall.cl.cam.ac.uk>
Tue, 21 Sep 2004 09:46:52 +0000 (09:46 +0000)
Align size of xen skbuffs.

linux-2.6.8.1-xen-sparse/arch/xen/kernel/skbuff.c

index 9f18afe22aa4e6b141e3c2b88bd996342fe44352..0d0a8c0d4732e0809213201aee20ebc2310bf46e 100644 (file)
@@ -20,6 +20,10 @@ EXPORT_SYMBOL(__dev_alloc_skb);
 /* Referenced in netback.c. */
 /*static*/ kmem_cache_t *skbuff_cachep;
 
+/* Size must be cacheline-aligned (alloc_skb uses SKB_DATA_ALIGN). */
+#define XEN_SKB_SIZE \
+    ((PAGE_SIZE - sizeof(struct skb_shared_info)) & ~(SMP_CACHE_BYTES - 1))
+
 struct sk_buff *__dev_alloc_skb(unsigned int length, int gfp_mask)
 {
     struct sk_buff *skb;
@@ -41,8 +45,7 @@ struct sk_buff *__dev_alloc_skb(unsigned int length, int gfp_mask)
         return NULL;
     }
 
-    new_shinfo = 
-        new_data + PAGE_SIZE - sizeof(struct skb_shared_info);
+    new_shinfo = new_data + XEN_SKB_SIZE;
     memcpy(new_shinfo, skb_shinfo(skb), sizeof(struct skb_shared_info));
 
     kfree(skb->head);